// 2025/7/23
// 拓扑排序

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n, m; cin >> n >> m;
    vector<vector<int>> adjlist(n + 1);
    vector<int> limit(n + 1, 0);
    int u, v;
    while(m--)
    {
        cin >> u >> v;
        adjlist[u].emplace_back(v);
        ++limit[v];
    }

    vector<int> ans;
    for(int i = 1; i <= n; i++)
    {
        if(limit[i] == 0)
            ans.emplace_back(i);
    }

    for(int i = 0; i < ans.size(); i++)
    {
        for(auto num : adjlist[ans[i]])
        {
            --limit[num];
            if(limit[num] == 0)
                ans.emplace_back(num);
        }
    }

    if(ans.size() == n)
    {
        for(int i = 0; i < n; i++)
        {
            cout << ans[i];
            if(i != n - 1)
                cout << " ";
        }
        cout << endl;
    }
    else
        cout << -1 << endl;
}
// 64 位输出请用 printf("%lld")